#ifndef __H_DEFINTIONS
#define __H_DEFINTIONS

/////////////////////////////////////////////  DEFINITIONS  /////////////////////////////////////////////

// Flag values
#define A	1
#define B	2
#define C	4
#define D	8
#define E	16
#define F	32
#define G	64
#define H	128
#define I	256
#define J	512
#define K	1024
#define L	2048
#define M	4096
#define N	8192
#define O	16384
#define P	32768
#define Q	65536
#define R	131072
#define S	262144
#define T	524288
#define U	1048576
#define V	2097152
#define W	4194304
#define X	8388608
#define Y	16777216
#define Z	33554432
#define aa	67108864
#define bb	134217728
#define cc	268435456
#define dd	536870912
#define ee	1073741824
#define ff	2147483648

// Symphony return values...
#define EXIT_NORMAL			0
#define EXIT_PORT_TOO_LOW	1
#define EXIT_PORT_TOO_HIGH	2
#define EXIT_BAD_COPYOVER	3
#define EXIT_CANT_OPEN_FILE 4

// Server stuff
#define DEFAULT_PORT	9100
#define MAX_BUFFER		2048

// System files and directories
#define ACCOUNT_FILE	"system/accounts.sym"
#define AREA_DIR		"system/areas/"
#define AREA_FILE		"system/areas/areas.sym"
#define BAN_FILE		"system/banned.sym"
#define BANNER_DIR		"system/banners/"
#define BANNER_FILE		"number.sym"
#define BOARD_DIR		"system/boards/"
#define COPYOVER_FILE	"system/copyover.sym"
#define DATA_FILE		"system/data.sym"
#define HELP_FILE		"system/help.sym"
#define PFILE_DIR		"system/pfiles/"
#define QUOTE_FILE		"system/quotes.sym"
#define TEMP_FILE		"system_temp_file.sym"

// Log Types
#define SERVER	0
#define WORLD	1
#define EVENT	2
#define ACTION	3
#define ACCOUNT	4
#define OMNINET 5
#define ADMIN	6
#define PLAYER	7

// Log Files
#define SERVER_LOG		"log/server.log"
#define WORLD_LOG		"log/world.log"
#define EVENT_LOG		"log/event.log"
#define ACTION_LOG		"log/action.log"
#define ACCOUNT_LOG		"log/account.log"
#define OMNINET_LOG		"log/omninet.log"
#define ADMIN_LOG_DIR	"log/adminLog/"
#define PLAYER_LOG_DIR	"log/playerLog/"
#define DEFAULT_LOG		"log/default.log"

// Autoreboot warning levels
#define FIVE	0	// Five minutes
#define THIRTY	1	// Thirty seconds
#define THREE	2	// Three seconds
#define TWO		3	// Two seconds
#define ONE		4	// One second
#define REBOOT	5	// Reboot NOW

// Login stuff
#define INVALID			-1
#define CHECK_NAME		0
#define CHECK_PASSWORD	1
#define FINISHED		2

// Bit values for Area::_flags

// Bit values for Room::_flags
#define ROOM_FLAG_NO_EXIT	A

// Bit values for Exit::_flags
#define EXIT_FLAG_THERE		A		// Does the exit exist?
#define EXIT_FLAG_DOOR		B	// Does the exit have a door?
#define EXIT_FLAG_OPEN		C	// Is this door open?
#define	EXIT_FLAG_LOCK		D	// Does this door have a lock?
#define EXIT_FLAG_LOCKED	E	// Is this door locked?

// Bit values for Object::_flags

// Bit values for Character::_flags
#define CH_FLAG_TEDIT	A					// Text Edit mode
#define CH_FLAG_OMNINET	B					// Omninet
#define CH_FLAG_ON_TICK C					// Omninet [Tick]
#define CH_FLAG_ASSHOLE	D					// Asshole flag
#define CH_FLAG_STUPID	E					// Stupid flag
#define CH_FLAG_AFK		F					// AFK flag
#define CH_FLAG_LFG		E					// LFG flag
#define CH_FLAG_BUSY	F					// BUSY flag
#define OMNINET_TICK	CH_FLAG_ON_TICK		// Abstraction level

// Bit values for Mob::_flags

// Tick interval bounds (in seconds)
#define LOWER_TICK 45
#define UPPER_TICK 75

// Area reset interval bounds (in seconds)
#define LOWER_RESET 600
#define UPPER_RESET 900

// Vnum definitions
#define START_VNUM			50

// Levels
#define HEAD	130
#define GOD		120
#define BUILDER	115
#define KING	110
#define LORD	105
#define HERO	100
#define NEWB	10
#define START	1

// Races
#define HUMAN	0
#define ELF		1
#define DWARF	2
#define GOBLIN	3

//Classes
#define MAGE		0
#define CLERIC		1
#define WARRIOR		2
#define BANDIT		3

// Positions
#define SLEEPING	0
#define RESTING		1
#define SITTING		2
#define STANDING	3
#define RIDING		4
#define FIGHTING	5

// Genders
#define MALE	0
#define FEMALE	1
#define NEUTRAL	2

// Equipment Locations
#define FLOAT		0
#define HEAD_		1
#define EAR_L		2
#define EAR_R		3
#define FACE		4
#define NECK		5
#define BODY		6
#define SHOULDERS	7
#define ARMS		8
#define ELBOW_L		9
#define ELBOW_R		10
#define FOREARM_L	11
#define FOREARM_R	12
#define WRIST_L		13
#define WRIST_R		14
#define HAND_L		15
#define HAND_R		16
#define FINGER_L	17
#define FINGER_R	18
#define TORSO		19
#define WAIST		20
#define LEGS		21
#define KNEE_L		22
#define KNEE_R		23
#define SHIN_L		24
#define SHIN_R		25
#define ANKLE_L		26
#define ANKLE_R		27
#define FOOT_L		28
#define FOOT_R		29

// Character status
#define BROKEN		-1
#define LOGIN		0
#define CREATION	1
#define CONNECTED	2
#define AEDIT		3
#define REDIT		4
#define MEDIT		5
#define PEDIT		6
#define OEDIT		7
#define NEDIT		8

// Character hand
#define LEFT	0
#define RIGHT	1

// Directions
#define NORTH	0
#define EAST	1
#define SOUTH	2
#define WEST	3
#define UP		4
#define DOWN	5

// Reset types
#define OBJECT	0
#define MOB		1

// Room sectors
#define INDOOR		0
#define CITY		1
#define FOREST		2
#define PLAINS		3
#define SWAMP		4
#define MOUNTAIN	5
#define ROAD		6
#define UNDERWATER	7
#define GRAVEYARD	8
#define CHURCH		9
#define ARENA		10

// Mob action interval bounds (in seconds)
#define LOWER_ACT 10
#define UPPER_ACT 100

// Boards
#define ADMIN_BOARD		1
#define GENERAL_BOARD	2
#define IDEA_BOARD		3
#define	PERSONAL_BOARD	4

/////////////////////////////////////////////  ENUMERATIONS  /////////////////////////////////////////////
enum OBJECT_TYPE {	OT_ERROR = 0,	// Used for errors in static methods.
					ACCESSORY,
					ARMOR,
					BODY_PART,
					CLOTHING,
					COIN,
					CONTAINER,
					DRINK,
					FOOD,
					FURNITURE,
					JEWELRY,
					SCROLL,
					TRASH,
					WAND,
					WEAPON	};


#endif // #ifndef __H_DEFINTIONS
